unit UFormEspelhos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,UMarcacao,UColaborador, Grids, DateUtils;

type
  TFormEspelhos = class(TForm)
    pnlEspelho: TPanel;
    lblMesAno: TLabel;
    cmbMesAno: TComboBox;
    lblColaborador: TLabel;
    cmbColaborador: TComboBox;
    btnConsultar: TButton;
    sgrMarcacoes: TStringGrid;
    procedure FormShow(Sender: TObject);
    procedure btnConsultarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormEspelhos: TFormEspelhos;

procedure popularGrid(m:t_marcacoes);

implementation

{$R *.dfm}

procedure popularGrid(m:t_marcacoes);
var
  i:integer;
  saldo_parcial,saldo_total:integer;
  dh_anterior :TDateTime;
begin
  with FormEspelhos do
    obterMarcacoesColaborador(cmbMesAno.Items[cmbMesAno.ItemIndex],cmbColaborador.Items[cmbColaborador.ItemIndex],m);
  with FormEspelhos.sgrMarcacoes do
  begin
    RowCount := 1;
    FixedCols := 1;
    Cols[0][0] := 'S';
    ColWidths[0] := 30;
    Cols[1][0] := 'DATA HORA';
    ColWidths[1] := 120;
    Cols[2][0] := 'SENTIDO';
    ColWidths[2] := 60;
    Cols[3][0] := 'MAT';
    ColWidths[3] := 30;
    Cols[4][0] := 'SALDO';
    ColWidths[4] := 50;
  end;
  with FormEspelhos.sgrMarcacoes do
  begin
    saldo_parcial := 0;
    saldo_total := 0;
    for i := 0 to length(m) - 1 do
    begin
      RowCount := RowCount + 1;
      if m[i].matricula = 0 then
      begin
        //saldo_parcial := m[i].data_hora;
        Cols[1][i + 1] := '';
        Cols[2][i + 1] := '';
        Cols[3][i + 1] := IntToStr(saldo_parcial);
        saldo_total := saldo_total + saldo_parcial;
        saldo_parcial := 0;
        continue;
      end
      else
        if m[i].sentido = 'E' then
          dh_anterior := m[i].data_hora
        else
          saldo_parcial := Round(DaySpan(m[i].data_hora,dh_anterior)*24*60*60);
      Cols[1][i + 1] := FormatDateTime('dd/mm/yyyy hh:mm:ss',m[i].data_hora);
      if m[i].sentido = 'E' then
        Cols[2][i + 1] := 'Entrada'
      else
        Cols[2][i + 1] := 'Saida';
      Cols[3][i + 1] := IntToStr(m[i].matricula);
      if RowCount > 1 then
        FixedRows := 1;
    end; // for
    RowCount := RowCount + 1;
    Cols[3][i+1] := IntToStr(saldo_total);
  end; // with
end;

procedure TFormEspelhos.btnConsultarClick(Sender: TObject);
var
  marcacoes:t_marcacoes;
begin
  popularGrid(marcacoes);
end;

procedure TFormEspelhos.FormShow(Sender: TObject);
var
  mesano:t_string;
  colab:t_colaboradores;
  i:integer;
begin
  mesano := obterListaMesAno;
  for i := 0 to Length(mesano)-1 do
    cmbMesAno.Items.Append(mesano[i]);
  obterColaboradores(colab);
  for i := 0 to Length(colab) - 1 do
    cmbColaborador.Items.Append(IntToStr(colab[i].matricula) + ' - ' + colab[i].nome);
end;

end.
